The present disclosure relates to handling outdated resources and performing a seamless multiple-version upgrade of cloud software in cloud architecture or other distributed environments. In particular, the present disclosure relates to identifying and preventing communications by an “outdated resource” (i.e., a resource that is not at the desired target version), removing the outdated resource, and executing a multiple-version upgrade of the outdated resource to the desired target version (visible to an end user of the cloud as a single upgrade operation, yet with one or more interim upgrade paths that are concealed from the end user).
Cloud computing and architecture have become increasingly popular for offering various Information Technology (IT) concepts as services. In one implementation, consumers or requesters can request a service they desire and transact with a “cloud” provider for the needed service. Cloud computing and architecture are used in many applications, including educational institutions, healthcare, retail, travel, etc., to name just a few.
Cloud software used in such cloud architecture tends to evolve at a rapid pace, requiring frequent upgrades. In many instances, cloud upgrades are necessary to add new features or to fix security vulnerabilities that surface. These critical services are driving the demand for continuous improvements in cloud availability. Yet, cloud unavailability must be avoided to prevent disruption to consumers of the services operated by the cloud.
In some instances, cloud service providers routinely provide software upgrades while sustaining service, a procedure called online software upgrade. Industry best practices for software upgrades recommend avoiding downtime through rolling upgrades, which upgrade and then reboot each host in a wave rolling through the data center. Some cloud service providers may establish sections or domains and then upgrade one section or domain at a time. This allows shutting down and restarting the resources in each section or domain. Such rolling upgrades avoid service interruptions and impose very little capacity loss, but are feasible only with maintaining backward compatibility, so the system's clients can interact with either the outdated version or the target version of the software during a rolling upgrade, which requires the two versions to interact with each other in a compatible manner. Current commercial tools that facilitate rolling upgrades provide no way for determining if interactions between the mixed versions are safe and secure. Even more significantly, in most instances, system behavior with mixed versions of software is not guaranteed to conform to the specification of either version and is hard to test and validate in advance.
Moreover, cloud computing and architecture has introduced new paradigms that are not well integrated into the existing approaches for software maintenance and evolution. For example, the ability to adjust the computer and storage resources elastically, which is one of the most distinctive features provided by the cloud, in not fully utilized by the current upgrade mechanisms. Software upgrades in this environment can result in challenges for both developers and quality assurance engineers.
The present disclosure solves problems associated with handling outdated resources and upgrading multiple versions of software in cloud architecture, by providing an effective system for preventing communications by outdated resources and implementing multiple-version upgrade schemes seamlessly in a single operation, with internal operations of interim upgrades concealed from end users of the cloud.